/**
 * 
 */
package renmopr.tourguide.util;

import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * Created by huangshiming at 2016年3月12日 下午6:30:58.
 * 数字工具 
 */
public class NumUtil {
    
    public static final String FORMAT_SCALE_2 = "#,###,###,##0.00";
    public static final int SCALE = 2;

    /**
     * 多个 double 相加
     * @param val
     * @param incs
     * @return
     */
    public static double incDouble(Double val,Double ... incs){
        for(Double inc : incs){
            val = incDouble2(val,inc);
        }
        return fmtDouble(val);
    }
    
    /**
     * 两个 double 相加
     * @param val
     * @param inc
     * @return
     */
    public static double incDouble2(Double val,Double inc){
        double tmp = 0.0D;
        if(val == null){
            val = 0D;
        }
        tmp += val;
        if(inc != null){
            tmp += inc;
        }
        return tmp;
    }
    
    /**
     * 四舍五入，返回一个比较精准、包含两位小数的浮点数
     * @param val
     * @return
     */
    public static double fmtDouble(double val) {
        BigDecimal b = new BigDecimal(val);
        return b.setScale(SCALE, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
    
    /**
     * 四舍五入，返回 ###,##0.00 字符串
     * @param val
     * @return
     */
    public static String dFmtStr(double val) {
        DecimalFormat df = new DecimalFormat(FORMAT_SCALE_2);   
        return df.format(val);
    }
    
    /**
     * 四舍五入，返回 ###,##0.00 字符串
     * @param val
     * @return
     */
    public static String fFmtStr(float val) {
        DecimalFormat df = new DecimalFormat(FORMAT_SCALE_2);   
        return df.format(val);
    }
    
    /**
     * 四舍五入，返回 ###,##0.00 字符串
     * @param val
     * @return
     */
    public static String iFmtStr(int val) {
        DecimalFormat df = new DecimalFormat(FORMAT_SCALE_2);   
        return df.format(val);
    }
    
    
    public static Integer str2Int(String value) {
        try {
            return Integer.valueOf(value);
        } catch(Exception e) {
            return null;
        }
    }
    
}
